Skip to content

Wait for copies and fills before freeing a UsmBox - #64

Open
ChihweiLHBird wants to merge 1 commit into
oneapi-src:mainfrom
ChihweiLHBird:usmbox-drop-waits
Open

ChihweiLHBird wants to merge 1 commit into
oneapi-src:mainfrom
ChihweiLHBird:usmbox-drop-waits

Conversation

@ChihweiLHBird

Copy link
Copy Markdown

A UsmBox could be freed while a copy or fill that uses it was still running, which breaks the precondition of sycl::free that no enqueued or in-progress command uses the memory. Safe code could do this by dropping an allocation before its zero fill finished, or by dropping the source or destination of a copy before the copy finished.

Have each UsmBox record the events of the copies and fills that use it, and wait for them before freeing the memory. If waiting fails, the memory is leaked instead, since a command may still be using it.

Fixes #63

A UsmBox could be freed while a copy or fill that uses it was still
running, which breaks the precondition of sycl::free that no enqueued
or in-progress command uses the memory. Safe code could do this by
dropping an allocation before its zero fill finished, or by dropping
the source or destination of a copy before the copy finished.

Have each UsmBox record the events of the copies and fills that use
it, and wait for them before freeing the memory. If waiting fails, the
memory is leaked instead, since a command may still be using it.

Signed-off-by: Zhiwei Liang <zhiwei.liang@zliang.me>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues are reported for the changes to track pending operations before USM memory deallocation.

No open issues 🎉

What changed in this PR

Addresses #63 by making UsmBox wait for tracked copies and fills before freeing its memory, preventing deallocation while those operations still use it.

Changes:

  • Track copy and fill events on each affected allocation.
  • Wait for pending events during drop; leak the allocation if waiting fails.
  • Update safety documentation and the changelog to describe the blocking drop behavior.
File Description
sycl/​sycl-rs/​src/​usmbox.rs Tracks pending events and waits before deallocation.
sycl/​sycl-rs/​src/​queue.rs Registers fill events and copy events with affected allocations.
sycl/​sycl-rs/​src/​lib.rs Updates the documented safety model and removes the zero-cost claim.
CHANGELOG.md Records the new wait-before-free behavior.

Review effort: Balanced

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dropping a UsmBox does not wait for the copies and fills that use it

2 participants